// 导入Electron核心模块
import { app, BrowserWindow } from 'electron'
// 导入Node.js路径处理模块
import { join } from 'path'
// 导入应用图标
import icon from '../../resources/logo.svg?asset'
// 导入应用图标

/**
 * 创建应用窗口函数
 * 负责初始化并配置主浏览器窗口，设置窗口尺寸和Web偏好设置
 */
function createWindow(): void {
  // 创建基本浏览器窗口
  const mainWindow = new BrowserWindow({
    // 设置窗口默认宽度
    width: 800,
    // 设置窗口默认高度
    height: 600,
    // 设置窗口图标
    icon: icon,
    // 配置Web相关偏好设置
    webPreferences: {
      // 指定预加载脚本路径，用于在渲染进程和主进程间建立通信桥接
      preload: join(__dirname, '../preload/index.js')
    }
  })

  // 根据环境加载不同的内容源
  if (process.env.NODE_ENV === 'development' && process.env['ELECTRON_RENDERER_URL']) {
    // 开发环境：加载开发服务器URL（由electron-vite自动设置）
    mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
  } else {
    // 生产环境：加载本地打包后的HTML文件
    mainWindow.loadFile(join(__dirname, '../renderer/index.html'))
  }
}

/**
 * 应用生命周期管理
 * 处理应用初始化、窗口创建和系统平台特定行为
 */
// 当Electron应用准备就绪后执行
app.whenReady().then(() => {
  // 创建主窗口
  createWindow()

  // macOS特定行为：当点击应用图标且没有打开窗口时，重新创建窗口
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

// 处理所有窗口关闭事件
app.on('window-all-closed', () => {
  // 非macOS平台：当所有窗口关闭时退出应用
  // macOS平台：应用通常会保持运行，直到用户明确退出
  if (process.platform !== 'darwin') {
    app.quit()
  }
})
